#include"stdio.h"
#include"unistd.h"
#include"stdlib.h"
#include"sys/wait.h"
#include"sys/types.h"

#define N 10

void RunChild()
{
  int cnt = 5;
  while(cnt)
  {
    printf("I am child process, pid:%d, ppid:%d\n",getpid(), getppid());
    sleep(1);
    cnt--;
  }
}


int main()
{
  for(int i = 0; i < N; i++)
  {
    pid_t id = fork();
    if(id == 0)
    {
      //child
      RunChild();
      exit(0);
    }
    printf("creat child process:%d success\n", id); //这句话只有父进程才会执行
  }

  sleep(10);

  //等待
  for(int i = 0; i < N; i++)
  {
    pid_t id = wait(NULL);
    if(id > 0)
    {
      printf("wait %d success\n", id);
    }
  }

  sleep(5);

//  pid_t id = fork();
//  if(id < 0)
//  {
//    perror("fork");
//    return 1;
//  }
//  else if(id == 0)
//  {
//    //child
//    int cnt = 5;
//    while(cnt)
//    {
//      printf("I am child, pid:%d, ppid:%d, cnt:%d\n",getpid(), getppid(), cnt);
//      cnt--;
//      sleep(1);
//    }
//    exit(0);
//  }
//  else
//  {
//    //parent
//    int cnt = 10;
//    while(cnt)
//    {
//      printf("I am father, pid:%d, ppid:%d, cnt:%d\n",getpid(), getppid(), cnt);
//      cnt--;
//      sleep(1);
//    }
//    pid_t ret = wait(NULL);
//    if(ret == id)
//    {
//      printf("wait success, ret:%d\n",ret);
//    }
//
//  }

  return 0;
}

